function sleep(delay) {
    var start = new Date().getTime();
    while (new Date().getTime() < start + delay);
}

function errAlert(errMsg, errObj) {
	alert(errMsg);
	if (typeof errObj != "undefined") {
		$(errObj).focus();
	}
	return; 
}

// textarea 줄바꿈 제한
function limitLine(textArea, maxRows) {
	if (!textArea.is('textarea')) {
		return;
	}
	if ((typeof maxRows == "undefined") || (maxRows <= 0)) {
		return;
	}
	
	var rows = $(textArea).val().split('\n').length;
	var tempText = '';
	
	if (rows > maxRows) {
		alert(maxRows + '줄 까지만 가능합니다.');
		tempText = textArea.val().split("\n").slice(0, maxRows);
		textArea.val(tempText.join("\n"));
	}
}

function limitTextByte(textObj, maxLen) {
	var availLen = maxLen; 
	var msgLen = textObj.val().length;
	var tempMsg = '';
	
	for (i=0 ; i<msgLen ; i++) {
		var chkChar = textObj.val().charAt(i);
		
		if (escape(chkChar).length > 4) {
			availLen -= 2; 
		} else {
			availLen--;
		}
		
		if (availLen < 0) {
			alert('총 ' + (maxLen) + 'Byte, ' + (maxLen/2) + '자까지 입력 가능합니다.');
			textObj.val(tempMsg);
			break;
		} else {
			tempMsg += chkChar;
		}
	}
}